import { itemList } from "./item";

let defaultUserLog = {
    plantLog: [], // 植物相关日志
    moneyLog: [], // 购买相关日志
    sunLog: [], // 收获阳光日志
}

const shopTypeList = {
    normal: '道具商店',
    shovel: '铲子商店',
    giftBox: '礼盒商店',
    extension: '花园扩建',
    learn: '花园研学',
}

let shop = [
    {
        name: '道具商店',
        itemList: [
            {
                itemId: 18,
                name: '阳光瓶',
                desc: '打开可获取随机数量的可用阳光。',
                price: 10,
                unlockLevel: 1, // 解锁等级
                isCanMultiple: true, // 是否可拥有多个
                canBatchBuy: true, // 是否可批量购买
                everyDayLimit: 10, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'normal', // 商店类型
                alias: ['阳光瓶']
            },
            {
                itemId: 25,
                name: '天启石',
                desc: '指定变更当前天气，且在12小时内天气不会自然变更。',
                price: 50,
                unlockLevel: 1, // 解锁等级
                isCanMultiple: true, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 1, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'normal', // 商店类型
                alias: ['天启石', '天启'],
            },
            {
                itemId: 26,
                name: '避风护符',
                desc: '使用后随机变更当前天气。',
                price: 10,
                unlockLevel: 1, // 解锁等级
                isCanMultiple: true, // 是否可拥有多个
                canBatchBuy: true, // 是否可批量购买
                everyDayLimit: 5, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'normal', // 商店类型
                alias: ['避风护符', '避风'],
            }
        ]
    },
    {
        name: '铲子商店',
        itemList: [
            {
                itemId: 1,
                name: '小铲子',
                desc: '可以用于铲除植物。',
                price: 10,
                unlockLevel: 1, // 解锁等级
                isCanMultiple: false, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 0, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'shovel', // 商店类型
                alias: ['小铲子', '铲子', '铲']
            },
            {
                itemId: 5,
                name: '木制铲子',
                desc: '用于铲除植物，有一定的概率返还对应比例的种植消耗。',
                price: 50,
                unlockLevel: 1, // 解锁等级
                isCanMultiple: false, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 0, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'shovel', // 商店类型
                alias: ['木制铲子', '木铲子', '木铲']
            },
            {
                itemId: 6,
                name: '铁制铲子',
                desc: '用于铲除植物，有一定的概率返还对应比例的种植消耗。',
                price: 100,
                unlockLevel: 2, // 解锁等级
                isCanMultiple: false, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 0, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'shovel', // 商店类型
                alias: ['铁制铲子', '铁铲子', '铁铲']
            },
        ]
    },
    {
        name: '礼盒商店',
        itemList: [
            {
                itemId: 10,
                name: '铲子礼盒',
                desc: '随机获得一把铲子，你很疑惑你的邻居从哪里弄来这么多铲子。',
                price: 150,
                unlockLevel: 2, // 解锁等级
                isCanMultiple: true, // 是否可拥有多个
                canBatchBuy: true, // 是否可批量购买
                everyDayLimit: 0, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'giftBox', // 商店类型
                alias: ['铲子礼盒']
            },
            {
                itemId: 11,
                name: '戴夫的礼物',
                desc: '表面布满了灰尘，旁边还贴着你亲爱的邻居的名字。',
                price: 50,
                unlockLevel: 3, // 解锁等级
                isCanMultiple: true, // 是否可拥有多个
                canBatchBuy: true, // 是否可批量购买
                everyDayLimit: 10, // 每日购买限制 0为无限制
                everyWeekLimit: 50, // 每周购买限制 0为无限制
                shopType: 'giftBox', // 商店类型
                alias: ['戴夫的礼物', '戴夫的礼盒', '戴夫']
            },
        ]
    },
    {
        name: '花园扩建',
        itemList: [
            {
                itemId: 0,
                name: '花园扩建许可(+10)',
                desc: '使用后可增加花园的种植上限。',
                price: 100,
                unlockLevel: 1, // 解锁等级
                isCanMultiple: false, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 0, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'extension', // 商店类型
                alias: ['花园扩建许可', '花园扩建', '扩建许可', '许可', '扩建'],
                isCanRepeatBuy: false, // 是否可重复购买 扩建独有 为true时会检测用户扩建记录
                extensionId: 1, // 扩建id
                extensionNumber: 10, // 扩建数量
            },
            {
                itemId: 0,
                name: '花园扩建许可(+10)',
                desc: '使用后可增加花园的种植上限。',
                price: 200,
                unlockLevel: 2, // 解锁等级
                isCanMultiple: false, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 0, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'extension', // 商店类型
                alias: ['花园扩建许可', '花园扩建', '扩建许可', '许可', '扩建'],
                isCanRepeatBuy: false, // 是否可重复购买 扩建独有
                extensionId: 2, // 扩建id
                extensionNumber: 10, // 扩建数量
            },
            {
                itemId: 0,
                name: '花园扩建许可(+10)',
                desc: '使用后可增加花园的种植上限。',
                price: 300,
                unlockLevel: 3, // 解锁等级
                isCanMultiple: false, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 0, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'extension', // 商店类型
                alias: ['花园扩建许可', '花园扩建', '扩建许可', '许可', '扩建'],
                isCanRepeatBuy: false, // 是否可重复购买 扩建独有
                extensionId: 3, // 扩建id
                extensionNumber: 10, // 扩建数量
            },
            {
                itemId: 0,
                name: '花园扩建许可(+10)',
                desc: '使用后可增加花园的种植上限。',
                price: 400,
                unlockLevel: 4, // 解锁等级
                isCanMultiple: false, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 0, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'extension', // 商店类型
                alias: ['花园扩建许可', '花园扩建', '扩建许可', '许可', '扩建'],
                isCanRepeatBuy: false, // 是否可重复购买 扩建独有
                extensionId: 4, // 扩建id
                extensionNumber: 10, // 扩建数量
            },
            {
                itemId: 0,
                name: '花园扩建许可(+10)',
                desc: '使用后可增加花园的种植上限。',
                price: 500,
                unlockLevel: 5, // 解锁等级
                isCanMultiple: false, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 0, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'extension', // 商店类型
                alias: ['花园扩建许可', '花园扩建', '扩建许可', '许可', '扩建'],
                isCanRepeatBuy: false, // 是否可重复购买 扩建独有
                extensionId: 5, // 扩建id
                extensionNumber: 10, // 扩建数量
            },
            {
                itemId: 0,
                name: '花园扩建许可(+15)',
                desc: '使用后可增加花园的种植上限。',
                price: 600,
                unlockLevel: 6, // 解锁等级
                isCanMultiple: false, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 0, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'extension', // 商店类型
                alias: ['花园扩建许可', '花园扩建', '扩建许可', '许可', '扩建'],
                isCanRepeatBuy: false, // 是否可重复购买 扩建独有
                extensionId: 6, // 扩建id
                extensionNumber: 15, // 扩建数量
            },
            {
                itemId: 0,
                name: '花园扩建许可(+15)',
                desc: '使用后可增加花园的种植上限。',
                price: 700,
                unlockLevel: 7, // 解锁等级
                isCanMultiple: false, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 0, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'extension', // 商店类型
                alias: ['花园扩建许可', '花园扩建', '扩建许可', '许可', '扩建'],
                isCanRepeatBuy: false, // 是否可重复购买 扩建独有
                extensionId: 7, // 扩建id
                extensionNumber: 15, // 扩建数量
            },
            {
                itemId: 0,
                name: '花园扩建许可(+20)',
                desc: '使用后可增加花园的种植上限。',
                price: 800,
                unlockLevel: 8, // 解锁等级
                isCanMultiple: false, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 0, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'extension', // 商店类型
                alias: ['花园扩建许可', '花园扩建', '扩建许可', '许可', '扩建'],
                isCanRepeatBuy: false, // 是否可重复购买 扩建独有
                extensionId: 8, // 扩建id
                extensionNumber: 20, // 扩建数量
            },
            {
                itemId: 0,
                name: '花园密植技术(+1)',
                desc: '使用后可增加花园的种植上限。',
                price: 120,
                unlockLevel: 1, // 解锁等级
                isCanMultiple: false, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 0, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'extension', // 商店类型
                alias: ['花园密植技术', '花园密植', '密植技术', '密植'],
                isCanRepeatBuy: true, // 是否可重复购买 扩建独有
                extensionId: 9, // 扩建id
                extensionNumber: 1, // 扩建数量
            },
            {
                itemId: 0,
                name: '花园土地翻新工程(+20)',
                desc: '使用后可增加花园的种植上限，虽然它真的很贵。',
                price: 2000,
                unlockLevel: 1, // 解锁等级
                isCanMultiple: false, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 0, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'extension', // 商店类型
                alias: ['花园土地翻新工程', '花园土地翻新', '翻新工程', '土地翻新工程'],
                isCanRepeatBuy: true, // 是否可重复购买 扩建独有
                extensionId: 10, // 扩建id
                extensionNumber: 20, // 扩建数量
            },
        ]
    },
    {
        name: '花园研学',
        itemList: [
            {
                itemId: 20,
                name: '种植图鉴',
                desc: '可以查看植物的具体情报，升级可种植更多种类植物。',
                price: 200,
                unlockLevel: 3, // 解锁等级
                isCanMultiple: false, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 0, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'learn', // 商店类型
                alias: ['种植图鉴', '图鉴'],
            },
            {
                itemId: 21,
                name: '《植物学》',
                desc: '解锁强化植物功能，升级可增加植物等级上限。',
                price: 500,
                unlockLevel: 5, // 解锁等级
                isCanMultiple: false, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 0, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'learn', // 商店类型
                alias: ['植物学'],
            }
        ]
    },
    {
        name: '奇珍异品',
        itemList: [
            {
                itemId: 29,
                name: '安息乡的钥匙',
                desc: '附近最大的废弃墓园"安息乡"的大门钥匙...\n购买解锁僵尸相关玩法。',
                price: 10,
                unlockLevel: 1, // 解锁等级
                isCanMultiple: false, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 0, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'valuables', // 商店类型 贵重物品
                alias: ['安息乡的钥匙', '安息', '安息乡', '钥匙'],
            },
            {
                itemId: 34,
                name: '向日葵瓶',
                desc: '装备后，阳光最大储存量增加200%\n每次收获阳光时耐久度减少1点，耐久初始5点。',
                price: 10,
                unlockLevel: 1, // 解锁等级
                isCanMultiple: false, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 0, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'valuables', // 商店类型 贵重物品
                alias: ['向日葵瓶', '葵葵瓶', '葵瓶'],
            },
            {
                itemId: 35,
                name: '晴天娃娃',
                desc: '装备后，阳光最大储存量增加400%\n每次收获阳光时耐久度减少1点，耐久初始5点。',
                price: 20,
                unlockLevel: 1, // 解锁等级
                isCanMultiple: false, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 0, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'valuables', // 商店类型 贵重物品
                alias: ['晴天娃娃', '晴天', '娃娃'],
            },
        ]
    },
    {
        name: '花园补贴',
        itemList: [
            {
                itemId: 30,
                name: '资源补给箱',
                desc: '打开后可获得随机数量金钱，小概率获得稀有物品。',
                price: 0,
                unlockLevel: 1, // 解锁等级
                isCanMultiple: true, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 1, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'supplement', // 商店类型
                alias: ['资源补给箱', '资源补给', '补给箱', '资源箱'],
            },
            {
                itemId: 31,
                name: '金盏花的赠礼',
                desc: '打开后可获得随机数量金钱。',
                price: 0,
                unlockLevel: 1, // 解锁等级
                isCanMultiple: true, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 1, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'supplement', // 商店类型
                alias: ['金盏花的赠礼', '金盏花赠礼', '金赠礼', '金礼'],
            },
            {
                itemId: 32,
                name: '金盏花的礼盒',
                desc: '打开后有几率获得大量金钱。',
                price: 50,
                unlockLevel: 1, // 解锁等级
                isCanMultiple: true, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 1, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'supplement', // 商店类型
                alias: ['金盏花的礼盒', '金盏花礼盒', '金礼盒', '金盒'],
            },
            {
                itemId: 33,
                name: '花园深处的庇护',
                desc: '立即重置当前的庇护状态，获得持续一小时的庇护。',
                price: 0,
                unlockLevel: 1, // 解锁等级
                isCanMultiple: true, // 是否可拥有多个
                canBatchBuy: false, // 是否可批量购买
                everyDayLimit: 1, // 每日购买限制 0为无限制
                everyWeekLimit: 0, // 每周购买限制 0为无限制
                shopType: 'supplement', // 商店类型
                alias: ['花园深处的庇护', '花园庇护', '庇护'],
            },
        ]
    }
]

const getShopList = (userData, userItems = [], extension, showAll = false) => {
    let { level } = userData
    let { usedExtension = [] } = extension
    // 深拷贝shop
    let _ = JSON.parse(JSON.stringify(shop))
    let userShop = _.map(i => {
        i.itemList = i.itemList.map(item => {
            item.show = true // 展示该商品
            if (item.unlockLevel > level) { // 解锁等级大于玩家等级，不展示该商品
                item.show = false
                if (showAll) item.desc += '\n未达到该商品的解锁等级'
            }
            else if (!item.isCanMultiple && userItems.find(j => j.id == item.itemId)) { // 不可拥有多个的商品 持有时不显示
                item.show = false
                if (showAll) item.desc += '\n该商品不可重复购买'
            }
            else if (item.shopType == 'extension' && !item.isCanRepeatBuy && usedExtension.findIndex(j => j == item.extensionId) > -1) { // 不可重复购买的扩建 已有购买记录
                item.show = false
                if (showAll) item.desc += '\n该扩建只能购买一次'
            }
            return item
        })
        if (!showAll) {
            i.itemList = i.itemList.filter(item => item.show) // 过滤掉不展示的商品
        }
        return i
    })
    userShop = userShop.filter(i => i.itemList.length > 0) // 过滤掉没有商品的商店
    return userShop
}

export {
    getShopList
}